<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Networking TS compatibility</title>
    <link rel="stylesheet" href="../boostbook.css" type="text/css">
    <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
    <link rel="home" href="../index.html" title="Asio">
    <link rel="up" href="../index.html" title="Asio">
    <link rel="prev" href="reference/yield_context.html" title="yield_context">
    <link rel="next" href="std_executors.html" title="Proposed Standard Executors">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%">
    <tr>
        <td valign="top"><img alt="asio C++ library" width="250" height="60" src="../asio.png"></td>
    </tr>
</table>
<hr>
<div class="spirit-nav">
    <a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u"
                                                                                                  href="../index.html"><img
        src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a
        accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
<div class="section">
    <div class="titlepage">
        <div>
            <div><h2 class="title" style="clear: both">
                <a name="asio.net_ts"></a><a class="link" href="net_ts.html" title="Networking TS compatibility">Networking
                TS compatibility</a>
            </h2></div>
        </div>
    </div>
    <p>
        Asio now provides the interfaces and functionality specified by the "C++
        Extensions for Networking" Technical Specification. In addition to access
        via the usual Asio header files, this functionality may be accessed through
        special headers that correspond to the header files defined in the TS. These
        are listed in the table below:
    </p>
    <div class="informaltable">
        <table class="table">
            <colgroup>
                <col>
                <col>
            </colgroup>
            <thead>
            <tr>
                <th>
                    <p>
                        Networking TS header
                    </p>
                </th>
                <th>
                    <p>
                        Asio header
                    </p>
                </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">buffer</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">buffer</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">executor</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">executor</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">internet</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">internet</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">io_context</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">io_context</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">net</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span
                                class="identifier">net</span><span class="special">.</span><span
                                class="identifier">hpp</span><span class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">netfwd</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">netfwd</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">socket</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span class="identifier">socket</span><span
                                class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">timer</span><span class="special">&gt;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span
                                class="identifier">asio</span><span class="special">/</span><span
                                class="identifier">ts</span><span class="special">/</span><span
                                class="identifier">timer</span><span class="special">.</span><span class="identifier">hpp</span><span
                                class="special">&gt;</span></code>
                    </p>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
    <p>
        In some cases the new Networking TS compatible interfaces supersede older Asio
        facilities. In these cases the older interfaces have been deprecated. The table
        below shows the new Networking TS interfaces and the facilities they replace:
    </p>
    <div class="informaltable">
        <table class="table">
            <colgroup>
                <col>
                <col>
                <col>
            </colgroup>
            <thead>
            <tr>
                <th>
                    <p>
                        New interface
                    </p>
                </th>
                <th>
                    <p>
                        Old interface
                    </p>
                </th>
                <th>
                    <p>
                        Notes
                    </p>
                </th>
            </tr>
            </thead>
            <tbody>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context.html" title="io_context"><code
                                class="computeroutput"><span class="identifier">io_context</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_service.html" title="io_service"><code
                                class="computeroutput"><span class="identifier">io_service</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The name <code class="computeroutput"><span class="identifier">io_service</span></code>
                        is retained as a typedef.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/dispatch.html" title="dispatch"><code
                                class="computeroutput"><span class="identifier">dispatch</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/dispatch.html" title="io_context::dispatch"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">dispatch</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">dispatch</span></code> free
                        function can be used to submit functions to any <a class="link" href="reference/Executor1.html"
                                                                           title="Executor requirements">Executor</a>
                        or <a class="link" href="reference/ExecutionContext.html"
                              title="Execution context requirements">ExecutionContext</a>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/post.html" title="post"><code class="computeroutput"><span
                                class="identifier">post</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/post.html" title="io_context::post"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">post</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">post</span></code> free function
                        can be used to submit functions to any <a class="link" href="reference/Executor1.html"
                                                                  title="Executor requirements">Executor</a>
                        or <a class="link" href="reference/ExecutionContext.html"
                              title="Execution context requirements">ExecutionContext</a>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/defer.html" title="defer"><code class="computeroutput"><span
                                class="identifier">defer</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/post.html" title="io_context::post"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">post</span></code></a>
                        when the <a class="link" href="reference/asio_handler_is_continuation.html"
                                    title="asio_handler_is_continuation"><code class="computeroutput"><span
                            class="identifier">asio_handler_is_continuation</span></code></a>
                        hook returns true
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">defer</span></code> free function
                        can be used to submit functions to any <a class="link" href="reference/Executor1.html"
                                                                  title="Executor requirements">Executor</a>
                        or <a class="link" href="reference/ExecutionContext.html"
                              title="Execution context requirements">ExecutionContext</a>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">poll</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/poll.html" title="io_context::poll"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">poll</span></code></a>
                        overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span
                            class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">poll_one</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/poll_one.html" title="io_context::poll_one"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">poll_one</span></code></a> overload that takes
                        <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/run.html" title="io_context::run"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">run</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/run.html" title="io_context::run"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">run</span></code></a>
                        overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span
                            class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">run_one</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/run_one.html" title="io_context::run_one"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">run_one</span></code></a>
                        overload that takes <code class="computeroutput"><span class="identifier">error_code</span><span
                            class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/run_for.html" title="io_context::run_for"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">run_for</span></code></a>,
                        <a class="link" href="reference/io_context/run_until.html" title="io_context::run_until"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">run_until</span></code></a>, <a class="link"
                                                                                   href="reference/io_context/run_one_for.html"
                                                                                   title="io_context::run_one_for"><code
                            class="computeroutput"><span class="identifier">io_context</span><span
                            class="special">::</span><span class="identifier">run_one_for</span></code></a>, and <a
                            class="link" href="reference/io_context/run_one_until.html"
                            title="io_context::run_one_until"><code class="computeroutput"><span class="identifier">io_context</span><span
                            class="special">::</span><span class="identifier">run_one_until</span></code></a>
                    </p>
                </td>
                <td>
                </td>
                <td>
                    <p>
                        These functions add the ability to run an <code class="computeroutput"><span class="identifier">io_context</span></code>
                        for a limited time.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/restart.html" title="io_context::restart"><code
                                class="computeroutput"><span class="identifier">io_context</span><span class="special">::</span><span
                                class="identifier">restart</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/reset.html" title="io_context::reset"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">reset</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code
                                class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
                        <code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
                        parameter is type <code class="computeroutput"><span class="keyword">int</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/io_context.html" title="io_context::io_context"><code
                                class="computeroutput"><span class="identifier">io_context</span></code></a> constructor
                        <code class="computeroutput"><span class="identifier">concurrency_hint</span></code>
                        parameter is type <code class="computeroutput"><span class="identifier">std</span><span
                            class="special">::</span><span class="identifier">size_t</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The old constructor has not been retained as a deprecated overload.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/execution_context.html" title="execution_context"><code
                                class="computeroutput"><span class="identifier">execution_context</span></code></a>,
                        <a class="link" href="reference/execution_context__service.html"
                           title="execution_context::service"><code class="computeroutput"><span class="identifier">execution_context</span><span
                                class="special">::</span><span class="identifier">service</span></code></a>, and <a
                            class="link" href="reference/execution_context__id.html" title="execution_context::id"><code
                            class="computeroutput"><span class="identifier">execution_context</span><span
                            class="special">::</span><span class="identifier">id</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context.html" title="io_context"><code
                                class="computeroutput"><span class="identifier">io_service</span></code></a>,
                        <a class="link" href="reference/io_context__service.html" title="io_context::service"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">service</span></code></a>, and <a class="link"
                                                                                     href="reference/execution_context__id.html"
                                                                                     title="execution_context::id"><code
                            class="computeroutput"><span class="identifier">io_service</span><span
                            class="special">::</span><span class="identifier">id</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The service-related functionality has been moved to the <code class="computeroutput"><span
                            class="identifier">execution_context</span></code> base class. This
                        may also be used as a base for creating custom execution contexts.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/execution_context/make_service.html"
                           title="execution_context::make_service"><code class="computeroutput"><span
                                class="identifier">make_service</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/execution_context/add_service.html"
                           title="execution_context::add_service"><code class="computeroutput"><span class="identifier">add_service</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/strand.html" title="strand"><code class="computeroutput"><span
                                class="identifier">strand</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context__strand.html" title="io_context::strand"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">strand</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        This template works with any valid executor, and is itself a valid
                        executor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/executor_work_guard.html" title="executor_work_guard"><code
                                class="computeroutput"><span class="identifier">executor_work_guard</span></code></a>
                        and
                        <a class="link" href="reference/make_work_guard.html" title="make_work_guard"><code
                                class="computeroutput"><span class="identifier">make_work_guard</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context__work.html" title="io_context::work"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">work</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        Work tracking is now covered by the <a class="link" href="reference/Executor1.html"
                                                               title="Executor requirements">Executor</a>
                        requirements. These templates work with any valid executor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/executor_binder.html" title="executor_binder"><code
                                class="computeroutput"><span class="identifier">executor_binder</span></code></a>
                        and <a class="link" href="reference/bind_executor.html" title="bind_executor"><code
                            class="computeroutput"><span class="identifier">bind_executor</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/io_context/wrap.html" title="io_context::wrap"><code
                                class="computeroutput"><span class="identifier">io_service</span><span class="special">::</span><span
                                class="identifier">wrap</span></code></a>
                        and <a class="link" href="reference/io_context__strand/wrap.html"
                               title="io_context::strand::wrap"><code class="computeroutput"><span class="identifier">io_service</span><span
                            class="special">::</span><span class="identifier">strand</span><span
                            class="special">::</span><span class="identifier">wrap</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        These templates work with any valid executor.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/async_result.html" title="async_result"><code
                                class="computeroutput"><span class="identifier">async_result</span></code></a>
                        with <code class="computeroutput"><span class="identifier">CompletionToken</span></code>
                        and <code class="computeroutput"><span class="identifier">Signature</span></code> template
                        parameters
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="identifier">handler_type</span></code> and
                        single parameter <code class="computeroutput"><span
                            class="identifier">async_result</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">async_result</span></code>
                        trait is now the single point of customisation for asynchronous operation
                        completion handlers and return type.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/associated_executor.html" title="associated_executor"><code
                                class="computeroutput"><span class="identifier">associated_executor</span></code></a>
                        and
                        <a class="link" href="reference/get_associated_executor.html"
                           title="get_associated_executor"><code class="computeroutput"><span class="identifier">get_associated_executor</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/asio_handler_invoke.html" title="asio_handler_invoke"><code
                                class="computeroutput"><span class="identifier">asio_handler_invoke</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The handler invocation hook has been replaced by the new <a class="link"
                                                                                    href="reference/Executor1.html"
                                                                                    title="Executor requirements">Executor</a>
                        requirements and the associated executor traits.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/associated_allocator.html" title="associated_allocator"><code
                                class="computeroutput"><span class="identifier">associated_allocator</span></code></a>
                        and
                        <a class="link" href="reference/get_associated_allocator.html" title="get_associated_allocator"><code
                                class="computeroutput"><span
                                class="identifier">get_associated_allocator</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/asio_handler_allocate.html" title="asio_handler_allocate"><code
                                class="computeroutput"><span class="identifier">asio_handler_allocate</span></code></a>
                        and
                        <a class="link" href="reference/asio_handler_deallocate.html"
                           title="asio_handler_deallocate"><code class="computeroutput"><span class="identifier">asio_handler_deallocate</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The handler allocation hooks have been replaced by the standard Allocator
                        requirements and the associated allocator traits.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/const_buffer/data.html" title="const_buffer::data"><code
                                class="computeroutput"><span class="identifier">const_buffer</span><span
                                class="special">::</span><span class="identifier">data</span></code></a>
                        and <a class="link" href="reference/mutable_buffer/data.html" title="mutable_buffer::data"><code
                            class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span
                            class="identifier">data</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/buffer_cast.html" title="buffer_cast"><code
                                class="computeroutput"><span class="identifier">buffer_cast</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/const_buffer/size.html" title="const_buffer::size"><code
                                class="computeroutput"><span class="identifier">const_buffer</span><span
                                class="special">::</span><span class="identifier">size</span></code></a>
                        and <a class="link" href="reference/mutable_buffer/size.html" title="mutable_buffer::size"><code
                            class="computeroutput"><span class="identifier">mutable_buffer</span><span class="special">::</span><span
                            class="identifier">size</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/buffer_size.html" title="buffer_size"><code
                                class="computeroutput"><span class="identifier">buffer_size</span></code></a>
                        for single buffers
                    </p>
                </td>
                <td>
                    <p>
                        <code class="computeroutput"><span class="identifier">buffer_size</span></code> is not
                        deprecated for single buffers as <code class="computeroutput"><span class="identifier">const_buffer</span></code>
                        and <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
                        now satisfy the buffer sequence requirements
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/const_buffer.html" title="const_buffer"><code
                                class="computeroutput"><span class="identifier">const_buffer</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/const_buffers_1.html" title="const_buffers_1"><code
                                class="computeroutput"><span class="identifier">const_buffers_1</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The <a class="link" href="reference/ConstBufferSequence.html"
                               title="Constant buffer sequence requirements">ConstBufferSequence</a>
                        requirements have been modified such that <code class="computeroutput"><span class="identifier">const_buffer</span></code>
                        now satisfies them.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/mutable_buffer.html" title="mutable_buffer"><code
                                class="computeroutput"><span class="identifier">mutable_buffer</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/mutable_buffers_1.html" title="mutable_buffers_1"><code
                                class="computeroutput"><span class="identifier">mutable_buffers_1</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The <a class="link" href="reference/MutableBufferSequence.html"
                               title="Mutable buffer sequence requirements">MutableBufferSequence</a>
                        requirements have been modified such that <code class="computeroutput"><span class="identifier">mutable_buffer</span></code>
                        now satisfies them.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket/get_executor.html"
                           title="basic_socket::get_executor"><code class="computeroutput"><span class="identifier">basic_socket</span><span
                                class="special">::</span><span class="identifier">get_executor</span></code></a> (and
                        corresponding
                        member for I/O objects such as timers, serial ports, etc.)
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_io_object/get_io_service.html"
                           title="basic_io_object::get_io_service"><code class="computeroutput"><span
                                class="identifier">basic_io_object</span><span class="special">::</span><span
                                class="identifier">get_io_service</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        Use <code class="computeroutput"><span class="identifier">get_executor</span><span
                            class="special">().</span><span class="identifier">context</span><span
                            class="special">()</span></code> to obtain the associated <code class="computeroutput"><span
                            class="identifier">io_context</span></code>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/socket_base/max_listen_connections.html"
                           title="socket_base::max_listen_connections"><code class="computeroutput"><span
                                class="identifier">socket_base</span><span class="special">::</span><span
                                class="identifier">max_listen_connections</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/socket_base/max_connections.html"
                           title="socket_base::max_connections"><code class="computeroutput"><span class="identifier">socket_base</span><span
                                class="special">::</span><span class="identifier">max_connections</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/socket_base/wait_type.html" title="socket_base::wait_type"><code
                                class="computeroutput"><span class="identifier">socket_base</span><span class="special">::</span><span
                                class="identifier">wait_type</span></code></a>, <a class="link"
                                                                                   href="reference/basic_socket/wait.html"
                                                                                   title="basic_socket::wait"><code
                            class="computeroutput"><span class="identifier">basic_socket</span><span
                            class="special">::</span><span class="identifier">wait</span></code></a>, <a class="link"
                                                                                                         href="reference/basic_socket/async_wait.html"
                                                                                                         title="basic_socket::async_wait"><code
                            class="computeroutput"><span class="identifier">basic_socket</span><span
                            class="special">::</span><span class="identifier">async_wait</span></code></a>, <a
                            class="link" href="reference/basic_socket_acceptor/wait.html"
                            title="basic_socket_acceptor::wait"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span
                            class="special">::</span><span class="identifier">wait</span></code></a>, and <a
                            class="link" href="reference/basic_socket_acceptor/async_wait.html"
                            title="basic_socket_acceptor::async_wait"><code class="computeroutput"><span
                            class="identifier">basic_socket_acceptor</span><span class="special">::</span><span
                            class="identifier">async_wait</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/null_buffers.html" title="null_buffers"><code
                                class="computeroutput"><span class="identifier">null_buffers</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        Operations for reactive I/O.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_acceptor/accept.html"
                           title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span
                                class="special">::</span><span class="identifier">accept</span></code></a> returns a
                        socket
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_acceptor/accept.html"
                           title="basic_socket_acceptor::accept"><code class="computeroutput"><span class="identifier">basic_socket_acceptor</span><span
                                class="special">::</span><span class="identifier">accept</span></code></a> takes a
                        socket by
                        reference
                    </p>
                </td>
                <td>
                    <p>
                        Uses move support so requires C++11 or later. To accept a connection
                        into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
                        pass the destination context to <code class="computeroutput"><span
                            class="identifier">accept</span></code>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_acceptor/async_accept.html"
                           title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span
                                class="identifier">basic_socket_acceptor</span><span class="special">::</span><span
                                class="identifier">async_accept</span></code></a> passes socket
                        to handler
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_acceptor/async_accept.html"
                           title="basic_socket_acceptor::async_accept"><code class="computeroutput"><span
                                class="identifier">basic_socket_acceptor</span><span class="special">::</span><span
                                class="identifier">async_accept</span></code></a> takes a socket
                        by reference
                    </p>
                </td>
                <td>
                    <p>
                        Uses move support so requires C++11 or later. To accept a connection
                        into a socket object on a different <code class="computeroutput"><span class="identifier">io_context</span></code>,
                        pass the destination context to <code class="computeroutput"><span class="identifier">async_accept</span></code>.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span
                                class="identifier">connect</span></code></a>
                        overloads that take a range
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/connect.html" title="connect"><code class="computeroutput"><span
                                class="identifier">connect</span></code></a>
                        overloads that take a single iterator
                    </p>
                </td>
                <td>
                    <p>
                        The <a class="link" href="reference/ip__basic_resolver/resolve.html"
                               title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                            class="special">::</span><span class="identifier">resolve</span></code></a> function now
                        returns
                        a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
                        function's result is passed directly to <code class="computeroutput"><span class="identifier">connect</span></code>,
                        the range overload will be selected.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/async_connect.html" title="async_connect"><code
                                class="computeroutput"><span class="identifier">async_connect</span></code></a>
                        overloads that take a range
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/async_connect.html" title="async_connect"><code
                                class="computeroutput"><span class="identifier">async_connect</span></code></a>
                        overloads that take a single iterator
                    </p>
                </td>
                <td>
                    <p>
                        The <a class="link" href="reference/ip__basic_resolver/resolve.html"
                               title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                            class="special">::</span><span class="identifier">resolve</span></code></a> function now
                        returns
                        a range. When the <code class="computeroutput"><span class="identifier">resolve</span></code>
                        function's result is passed directly to <code class="computeroutput"><span class="identifier">async_connect</span></code>,
                        the range overload will be selected.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/duration.html"
                           title="basic_socket_streambuf::duration"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">duration</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/duration_type.html"
                           title="basic_socket_streambuf::duration_type"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">duration_type</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/time_point.html"
                           title="basic_socket_streambuf::time_point"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">time_point</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/time_type.html"
                           title="basic_socket_streambuf::time_type"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">time_type</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/expiry.html"
                           title="basic_socket_streambuf::expiry"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span
                                class="special">::</span><span class="identifier">expiry</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/expires_at.html"
                           title="basic_socket_streambuf::expires_at"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">expires_at</span></code></a> and <a class="link"
                                                                                       href="reference/basic_socket_streambuf/expires_from_now.html"
                                                                                       title="basic_socket_streambuf::expires_from_now"><code
                            class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span
                            class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/expires_after.html"
                           title="basic_socket_streambuf::expires_after"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">expires_after</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/expires_from_now.html"
                           title="basic_socket_streambuf::expires_from_now"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">expires_from_now</span></code></a> setter
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/error.html"
                           title="basic_socket_streambuf::error"><code class="computeroutput"><span class="identifier">basic_socket_streambuf</span><span
                                class="special">::</span><span class="identifier">error</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_streambuf/puberror.html"
                           title="basic_socket_streambuf::puberror"><code class="computeroutput"><span
                                class="identifier">basic_socket_streambuf</span><span class="special">::</span><span
                                class="identifier">puberror</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/duration.html"
                           title="basic_socket_iostream::duration"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">duration</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/duration_type.html"
                           title="basic_socket_iostream::duration_type"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">duration_type</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/time_point.html"
                           title="basic_socket_iostream::time_point"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">time_point</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/time_type.html"
                           title="basic_socket_iostream::time_type"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">time_type</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/expiry.html"
                           title="basic_socket_iostream::expiry"><code class="computeroutput"><span class="identifier">basic_socket_iostream</span><span
                                class="special">::</span><span class="identifier">expiry</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/expires_at.html"
                           title="basic_socket_iostream::expires_at"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">expires_at</span></code></a> and <a class="link"
                                                                                       href="reference/basic_socket_iostream/expires_from_now.html"
                                                                                       title="basic_socket_iostream::expires_from_now"><code
                            class="computeroutput"><span class="identifier">basic_socket_iostream</span><span
                            class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/expires_after.html"
                           title="basic_socket_iostream::expires_after"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">expires_after</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_socket_iostream/expires_from_now.html"
                           title="basic_socket_iostream::expires_from_now"><code class="computeroutput"><span
                                class="identifier">basic_socket_iostream</span><span class="special">::</span><span
                                class="identifier">expires_from_now</span></code></a> setter
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/cancel.html"
                           title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span
                                class="special">::</span><span class="identifier">cancel</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/cancel.html"
                           title="basic_waitable_timer::cancel"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span
                                class="special">::</span><span class="identifier">cancel</span></code></a> overload that
                        takes
                        <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/cancel_one.html"
                           title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">cancel_one</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/cancel_one.html"
                           title="basic_waitable_timer::cancel_one"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">cancel_one</span></code></a> overload that
                        takes <code class="computeroutput"><span class="identifier">error_code</span><span
                            class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expires_at.html"
                           title="basic_waitable_timer::expires_at"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">expires_at</span></code></a> setter
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expires_at.html"
                           title="basic_waitable_timer::expires_at"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">expires_at</span></code></a> setter that takes
                        <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expiry.html"
                           title="basic_waitable_timer::expiry"><code class="computeroutput"><span class="identifier">basic_waitable_timer</span><span
                                class="special">::</span><span class="identifier">expiry</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expires_at.html"
                           title="basic_waitable_timer::expires_at"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">expires_at</span></code></a> and <a class="link"
                                                                                       href="reference/basic_waitable_timer/expires_from_now.html"
                                                                                       title="basic_waitable_timer::expires_from_now"><code
                            class="computeroutput"><span class="identifier">basic_waitable_timer</span><span
                            class="special">::</span><span class="identifier">expires_from_now</span></code></a> getters
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expires_after.html"
                           title="basic_waitable_timer::expires_after"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">expires_after</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/basic_waitable_timer/expires_from_now.html"
                           title="basic_waitable_timer::expires_from_now"><code class="computeroutput"><span
                                class="identifier">basic_waitable_timer</span><span class="special">::</span><span
                                class="identifier">expires_from_now</span></code></a> setter
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address/make_address.html"
                           title="ip::address::make_address"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address/from_string.html"
                           title="ip::address::from_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address</span><span
                                class="special">::</span><span class="identifier">from_string</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v4/make_address_v4.html"
                           title="ip::address_v4::make_address_v4"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v4</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v4/from_string.html"
                           title="ip::address_v4::from_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                                class="special">::</span><span class="identifier">from_string</span></code></a> and <a
                            class="link" href="reference/ip__address_v6/to_v4.html" title="ip::address_v6::to_v4"><code
                            class="computeroutput"><span class="identifier">ip</span><span
                            class="special">::</span><span class="identifier">address_v6</span><span
                            class="special">::</span><span class="identifier">to_v4</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v6/make_address_v6.html"
                           title="ip::address_v6::make_address_v6"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">make_address_v6</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v6/from_string.html"
                           title="ip::address_v6::from_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span
                                class="special">::</span><span class="identifier">from_string</span></code></a> and <a
                            class="link" href="reference/ip__address_v6/v4_mapped.html"
                            title="ip::address_v6::v4_mapped"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span
                            class="special">::</span><span class="identifier">v4_mapped</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code
                                class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span
                                class="identifier">address</span><span class="special">::</span><span
                                class="identifier">to_string</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address/to_string.html" title="ip::address::to_string"><code
                                class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span
                                class="identifier">address</span><span class="special">::</span><span
                                class="identifier">to_string</span></code></a> that takes <code
                            class="computeroutput"><span class="identifier">error_code</span><span
                            class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v4/to_string.html"
                           title="ip::address_v4::to_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                                class="special">::</span><span class="identifier">to_string</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v4/to_string.html"
                           title="ip::address_v4::to_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                                class="special">::</span><span class="identifier">to_string</span></code></a> that takes
                        <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v6/to_string.html"
                           title="ip::address_v6::to_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span
                                class="special">::</span><span class="identifier">to_string</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v6/to_string.html"
                           title="ip::address_v6::to_string"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span
                                class="special">::</span><span class="identifier">to_string</span></code></a> that takes
                        <code class="computeroutput"><span class="identifier">error_code</span><span class="special">&amp;</span></code>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">error_code</span></code> overload
                        is not required.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        No replacement
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v6/is_v4_compatible.html"
                           title="ip::address_v6::is_v4_compatible"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6</span><span
                                class="special">::</span><span class="identifier">is_v4_compatible</span></code></a> and
                        <a class="link" href="reference/ip__address_v6/v4_compatible.html"
                           title="ip::address_v6::v4_compatible"><code class="computeroutput"><span class="identifier">ip</span><span
                                class="special">::</span><span class="identifier">address_v6</span><span
                                class="special">::</span><span class="identifier">v4_compatible</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__network_v4.html" title="ip::network_v4"><code
                                class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span
                                class="identifier">network_v4</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__address_v4/broadcast.html"
                           title="ip::address_v4::broadcast"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                                class="special">::</span><span class="identifier">broadcast</span></code></a>, <a
                            class="link" href="reference/ip__address_v4/is_class_a.html"
                            title="ip::address_v4::is_class_a"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                            class="special">::</span><span class="identifier">is_class_a</span></code></a>, <a
                            class="link" href="reference/ip__address_v4/is_class_b.html"
                            title="ip::address_v4::is_class_b"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                            class="special">::</span><span class="identifier">is_class_b</span></code></a>, <a
                            class="link" href="reference/ip__address_v4/is_class_c.html"
                            title="ip::address_v4::is_class_c"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                            class="special">::</span><span class="identifier">is_class_c</span></code></a>, and <a
                            class="link" href="reference/ip__address_v4/netmask.html"
                            title="ip::address_v4::netmask"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4</span><span
                            class="special">::</span><span class="identifier">netmask</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">network_v4</span></code> class
                        adds the ability to manipulate IPv4 network addresses using CIDR
                        notation.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__network_v6.html" title="ip::network_v6"><code
                                class="computeroutput"><span class="identifier">ip</span><span class="special">::</span><span
                                class="identifier">network_v6</span></code></a>
                    </p>
                </td>
                <td>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">network_v6</span></code> class
                        adds the ability to manipulate IPv6 network addresses using CIDR
                        notation.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_address_iterator_lt__address_v4__gt_.html"
                           title="ip::basic_address_iterator&lt; address_v4 &gt;"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_iterator</span></code></a>
                        and
                        <a class="link" href="reference/ip__basic_address_range_lt__address_v4__gt_.html"
                           title="ip::basic_address_range&lt; address_v4 &gt;"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v4_range</span></code></a>
                    </p>
                </td>
                <td>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">ip</span><span
                            class="special">::</span><span class="identifier">address_v4_iterator</span></code> and
                        <code class="computeroutput"><span class="identifier">address_v4_range</span></code> classes add
                        the
                        ability to iterate over all, or a subset of, IPv4 addresses.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_address_iterator_lt__address_v6__gt_.html"
                           title="ip::basic_address_iterator&lt; address_v6 &gt;"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_iterator</span></code></a>
                        and
                        <a class="link" href="reference/ip__basic_address_range_lt__address_v6__gt_.html"
                           title="ip::basic_address_range&lt; address_v6 &gt;"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">address_v6_range</span></code></a>
                    </p>
                </td>
                <td>
                </td>
                <td>
                    <p>
                        The <code class="computeroutput"><span class="identifier">ip</span><span
                            class="special">::</span><span class="identifier">address_v6_iterator</span></code> and
                        <code class="computeroutput"><span class="identifier">address_v6_range</span></code> classes add
                        the
                        ability to iterate over all, or a subset of, IPv6 addresses.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/results_type.html"
                           title="ip::basic_resolver::results_type"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">results_type</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/iterator.html"
                           title="ip::basic_resolver::iterator"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">iterator</span></code></a>
                    </p>
                </td>
                <td>
                    <p>
                        Resolvers now produce ranges rather than single iterators.
                    </p>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/resolve.html"
                           title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">resolve</span></code></a> overloads
                        taking
                        hostname and service as arguments
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/resolve.html"
                           title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">resolve</span></code></a> overloads
                        taking
                        a <a class="link" href="reference/ip__basic_resolver/query.html"
                             title="ip::basic_resolver::query"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                            class="special">::</span><span class="identifier">query</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/resolve.html"
                           title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">resolve</span></code></a> returns a
                        range
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/resolve.html"
                           title="ip::basic_resolver::resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">resolve</span></code></a> returns a
                        single
                        iterator
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/async_resolve.html"
                           title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">async_resolve</span></code></a>
                        overloads
                        taking hostname and service as arguments
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/async_resolve.html"
                           title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">async_resolve</span></code></a>
                        overloads
                        taking a <a class="link" href="reference/ip__basic_resolver/query.html"
                                    title="ip::basic_resolver::query"><code class="computeroutput"><span
                            class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                            class="special">::</span><span class="identifier">query</span></code></a>
                    </p>
                </td>
                <td>
                </td>
            </tr>
            <tr>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/async_resolve.html"
                           title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">async_resolve</span></code></a> calls
                        the
                        handler with a range
                    </p>
                </td>
                <td>
                    <p>
                        <a class="link" href="reference/ip__basic_resolver/async_resolve.html"
                           title="ip::basic_resolver::async_resolve"><code class="computeroutput"><span
                                class="identifier">ip</span><span class="special">::</span><span class="identifier">basic_resolver</span><span
                                class="special">::</span><span class="identifier">async_resolve</span></code></a> calls
                        the
                        handler with a single iterator
                    </p>
                </td>
                <td>
                </td>
            </tr>
            </tbody>
        </table>
    </div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%">
    <tr>
        <td align="left"></td>
        <td align="right">
            <div class="copyright-footer">Copyright © 2003-2022 Christopher M. Kohlhoff<p>
                Distributed under the Boost Software License, Version 1.0. (See accompanying
                file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
            </p>
            </div>
        </td>
    </tr>
</table>
<hr>
<div class="spirit-nav">
    <a accesskey="p" href="reference/yield_context.html"><img src="../prev.png" alt="Prev"></a><a accesskey="u"
                                                                                                  href="../index.html"><img
        src="../up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../home.png" alt="Home"></a><a
        accesskey="n" href="std_executors.html"><img src="../next.png" alt="Next"></a>
</div>
</body>
</html>
